Since the dawn of the computer age, computer systems have evolved into extremely sophisticated devices that may be found in many different settings. Computer systems typically include a combination of hardware (e.g., semiconductors, circuit boards, etc.) and software (e.g., computer programs). As advances in semiconductor processing and computer architecture push the performance of the computer hardware ever higher, more sophisticated computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful than just a few years ago.
The combination of hardware and software on a particular computer system defines a computing environment. Different hardware platforms and different operating systems thus provide different computing environments. In recent years, engineers have recognized that it is possible to provide different computing environments on the same physical computer system by logically partitioning the computer system resources into different computing environments. The iSeries computer system developed by IBM Corporation is an example of a computer system that supports logical partitioning. If logical partitioning on an iSeries computer system is desired, resource and partition manager code (referred to as a “hypervisor” in iSeries terminology) is installed that allows defining different computing environments on the same platform. Once the resource and partition manager is installed, logical partitions may be created that define different computing environments. The resource and partition manager manages the logical partitions to assure that they can share needed resources in the computer system while maintaining the separate computing environments defined by the logical partitions.
A computer system that includes multiple logical partitions typically shares resources between the logical partitions. For example, a computer system with two logical partitions could be defined that allocates 50% of the CPU to each partition, that allocates 33% of the memory to the first partition and 67% of the memory to the second partition, and that allocates two different input/output (I/O) slots to the two logical partitions, one per partition. Once logical partitions are defined and shared resources are allocated to the logical partitions, each logical partition acts as a separate computer system. Thus in the example above that has a single computer system with two logical partitions, the two logical partitions will appear for all practical purposes to be two separate and distinct computer systems.
As described above, in a logically partitioned computer system, I/O slots can be assigned to individual logical partitions. These I/O slots can be connected to the computing environment through common hardware, or “I/O Fabric”, that is effectively shared by all logical partitions having slots connected through that same fabric. In a typical embodiment, I/O slots reside within an I/O enclosure which is physically separate from the processor/memory enclosure of the computing environment. In such an instance, a processor/memory enclosure is connected to the I/O enclosure via a set of interconnection cables. Additional sets of interconnection cables may be used to provide connections among the I/O enclosures themselves.
The interconnection cables forming the I/O fabric can have a variety of lengths, depending upon physical characteristics, proximity and space requirements of the interconnected enclosures. As an example, such interconnection cables typically are available in lengths of 1, 3, 6, 10, 15, and greater than 15 meters. Generally speaking, as the length of the interconnection cable increases, the maximum speed at which data may be transmitted through the cable decreases. By way of example, the shorter cable lengths (e.g., 1, 3, 6 and 10 meters) are operable at data transfer speeds of up to 1 GB/second, an intermediate length cable can only support data transfer speeds of up to 500 MB/second, and a long cable having a length of greater than 15 meters can only support data transfer speeds of up to 250 MB/second.
In order to more easily identify the length of interconnection cables utilized within a computing environment, such cables may incorporate identification pins within the cable connectors which are encoded with identifying information (e.g., speed, length) about the cable itself. Examples of such cables include, U.S. Pat. No. 6,368,155 issued to Bassler et al. on Apr. 9, 2002, entitled “Intelligent Sensing Connectors”, and U.S. Pat. No. 5,836,785 issued to Lee on Nov. 17, 1998, entitled “Apparatus and Method to Uniquely Identify Similarly Connected Electrical Devices”.
There is a need for a method of reading an encoded cable speed/length value contained within an interconnection cable to set the interconnection speed of two or more devices connected by the cable within a computing environment. This method should be able to detect changes to the cable connections within the I/O fabric of the computing environment, and autonomically reconfigure the connected devices to enable the interconnected devices to communicate at the maximum effective bandwidth, based on the length of the interconnection cables utilized.